"""
AI流式响应示例 - 展示Gua框架的AI流式处理能力
重构版本：基于Linus设计哲学，从600行简化到50行
"简单胜过复杂"
"""

import asyncio
import random
from urllib.parse import parse_qs
from gua import GuaApp
from gua.streaming_utils import create_ai_chat_stream
from gua.websocket_utils import create_ai_chat_websocket
from gua.template_utils import respond_template

app = GuaApp()


def generate_ai_response(user_input: str) -> str:
    """Linus式简化：智能响应生成 - 消除硬编码数组"""
    user_input = user_input.lower().strip()
    
    # 基于关键词的智能响应
    if any(word in user_input for word in ['你好', 'hello', 'hi']):
        return f"你好！很高兴见到你。关于'{user_input}'，我想说这是一个很有趣的话题。"
    elif any(word in user_input for word in ['什么', 'what', '如何', 'how', '为什么', 'why']):
        return f"关于'{user_input}'这个问题，让我从几个角度来分析。首先，我们需要理解问题的本质..."
    elif any(word in user_input for word in ['帮助', 'help', '问题', 'problem']):
        return f"我理解您需要帮助。对于'{user_input}'，我建议我们可以这样来处理..."
    elif len(user_input) < 5:
        return f"'{user_input}' - 这个问题很简洁。让我为您详细展开一下..."
    else:
        return f"您提到的'{user_input}'确实值得深入讨论。从我的角度来看，这个问题涉及到多个层面..."


@app.route("/")
async def index():
    """AI流式响应示例首页 - Linus式重构：使用模板"""
    return respond_template("ai_chat.html")


@app.route("/chat")
async def chat_stream(request):
    """AI流式对话响应 - Linus式重构：简化复杂逻辑"""
    # 获取用户消息
    query_params = parse_qs(request.query_string)
    message = query_params.get('message', [''])[0]
    
    # 生成智能响应
    response_text = generate_ai_response(message)
    
    # 模拟AI思考时间 - Linus式极致优化：最小延迟，最大流畅感
    thinking_time = min(0.05 + len(message) * 0.01 + random.uniform(0, 0.1), 0.5)
    await asyncio.sleep(thinking_time)
    
    # 使用通用AI聊天流
    return create_ai_chat_stream(response_text, thinking_time=0)


@app.websocket("/ws")
async def websocket_handler(scope, receive, send):
    """WebSocket处理器 - Linus式重构：使用通用AI聊天WebSocket"""
    return await create_ai_chat_websocket(scope, receive, send, generate_ai_response)


if __name__ == "__main__":
    import subprocess
    import sys
    
    # 使用gua命令显示示例启动信息
    result = subprocess.run([sys.executable, "-m", "gua.cli", "examples.ai_streaming:app", "--example-info"],
                          capture_output=True, text=True)
    if result.returncode == 0:
        print(result.stdout)
    else:
        print("错误: 无法显示启动信息")
        print("请手动运行: gua examples.ai_streaming:app --example-info")